package com.gitee.jsbd.algorithm.sort;

import java.util.Arrays;

/**
 * 冒泡排序 原地排序 稳定  （最好：O(n)   最坏：O(n^2) 平均：O(n^2)）
 * <p>
 * 比较相邻的元素。如果第一个比第二个大，就交换他们两个。
 * 对每一对相邻元素做同样的工作，从开始第一对到结尾的最后一对。在这一点，最后的元素应该会是最大的数。
 * 针对所有的元素重复以上的步骤，除了最后一个。
 * 持续每次对越来越少的元素重复上面的步骤，直到没有任何一对数字需要比较。
 * </p>
 */
public class BubbleSort {

    public static void bubbleSort(int[] data) {

        for (int i = 0; i < data.length; i++) {

            for (int j = 0; j < data.length - i - 1; j++) {

                if (data[j] > data[j + 1]) {
                    int value = data[j];
                    data[j] = data[j + 1];
                    data[j + 1] = value;
                }
            }

            System.out.print("第" + (i + 1) + "次排序后：");
            System.out.println(Arrays.toString(data));
        }

    }


    public static void main(String[] args) {
        int[] data = new int[]{5, 8, 7, 9, 1, 2};
        System.out.print("==初始化==：");
        System.out.println(Arrays.toString(data));

        bubbleSort(data);

        System.out.println(Arrays.toString(data));
    }

}
